home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
-
-
- void Error(char *msg)
- {
- printf("Error: %s\n", msg);
- }
-
-
- class Registry
- {
- HKEY key;
- public:
- Registry();
- ~Registry();
- int KeyExists(const char *name);
- void CreateKey(const char *name);
- void OpenKey(const char *name);
- void Value(const char *name, void *data, DWORD *dataLength,
- DWORD bufferLength, DWORD *dataType);
- void ValueString(const char *name, const char *defaultData, char *dest,
- int bufferLength);
- void WriteString(const char *name, const char *string);
- DWORD ValueDWORD(const char *name, DWORD defaultData);
- void WriteDWORD(const char *name, const DWORD data);
- };
-
-
- Registry::Registry()
- {
- }
-
-
- Registry::~Registry()
- {
- }
-
-
- int Registry::KeyExists(const char *name)
- {
- LONG err;
-
- err = RegOpenKeyEx(HKEY_CURRENT_USER, name, 0, KEY_ALL_ACCESS, &key);
- if ( err != ERROR_SUCCESS )
- return 0;
- return 1;
- }
-
-
- void Registry::CreateKey(const char *name)
- {
- LONG err;
- DWORD createStatus;
-
- err = RegCreateKeyEx(HKEY_CURRENT_USER, name, 0, NULL,
- REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, &createStatus);
- if ( err != ERROR_SUCCESS )
- Error("Registry key creation failed");
- }
-
-
-
- void Registry::OpenKey(const char *name)
- {
- LONG err;
-
- err = RegOpenKeyEx(HKEY_CURRENT_USER, name, 0, KEY_ALL_ACCESS, &key);
- if ( err != ERROR_SUCCESS )
- Error("Registry key opening failed");
- }
-
-
- void Registry::Value(const char *name, void *data, DWORD *dataLength, DWORD
- bufferLength, DWORD *dataType)
- {
- LONG err;
- DWORD len;
- DWORD type;
-
- len = bufferLength;
- err = RegQueryValueEx(key, (LPSTR) name, 0, &type, (LPBYTE) data,
- &len);
- if ( err != ERROR_SUCCESS )
- {
- len = *dataLength;
- type = *dataType;
- err = RegSetValueEx(key, (LPSTR) name, 0, type,
- (CONST BYTE*) data, len);
- if ( err != ERROR_SUCCESS )
- Error("Registry value creation failed");
- }
-
- *dataLength = len;
- *dataType = type;
- }
-
-
- void Registry::ValueString(const char *name, const char *defaultData,
- char *dest, int bufferLength)
- {
- DWORD len;
- DWORD type = REG_SZ;
-
- if ( bufferLength < (strlen(defaultData) + 1) )
- Error("Registry::ValueString() - too long default");
-
- strcpy(dest, defaultData);
- len = strlen(dest) + 1;
-
- Value(name, (void*) dest, &len, bufferLength, &type);
-
- if ( type != REG_SZ )
- Error("Registry::ValueString() - illegal value type");
- }
-
-
- void Registry::WriteString(const char *name, const char *string)
- {
- DWORD err;
-
- err = RegSetValueEx(key, (LPSTR) name, 0, REG_SZ, (CONST BYTE*) string,
- strlen(string)+1);
- if ( err != ERROR_SUCCESS )
- Error("Registry::WriteString(): value creation failed");
- }
-
-
- DWORD Registry::ValueDWORD(const char *name, DWORD defaultData)
- {
- DWORD len, type, buf;
-
- buf = defaultData;
- len = sizeof(DWORD);
- type = REG_DWORD;
-
- Value(name, (void*) &buf, &len, sizeof(DWORD), &type);
-
- if ( type != REG_DWORD )
- Error("Registy::ValueDWORD() - illegal value type");
-
- return buf;
- }
-
-
-
- void Registry::WriteDWORD(const char *name, const DWORD data)
- {
- DWORD err;
- DWORD buf = data;
-
- err = RegSetValueEx(key, (LPSTR) name, 0, REG_DWORD, (CONST BYTE*) &buf,
- sizeof(DWORD));
- if ( err != ERROR_SUCCESS )
- Error("Registry::WriteDWORD(): value creation failed");
- }
-
-
-
-
- int main(void)
- {
- char name[MAX_PATH];
- DWORD nameLen = MAX_PATH;
- DWORD valType;
- Registry reg;
-
- if ( !reg.KeyExists("Software\\Sahara Surfers\\MidpNT") )
- reg.CreateKey("Software\\Sahara Surfers\\MidpNT");
- else
- reg.OpenKey("Software\\Sahara Surfers\\MidpNT");
-
- strcpy(name, "c:\\haa\\huujamaaa");
- nameLen = strlen(name)+1;
- valType = REG_SZ;
- reg.Value("DefaultDirectory", name, &nameLen, MAX_PATH, &valType);
- printf("Data: \"%s\", len %lu, type %lu\n", name, nameLen, valType);
-
- reg.ValueString("TestString", "DefaultString", name, MAX_PATH);
- printf("Got string: \"%s\"\n", name);
-
- printf("Got DWORD: %lu\n", reg.ValueDWORD("KalanArvo", 17));
- printf("Lahna Got DWORD: %lu\n", reg.ValueDWORD("LahnanArvo", 17));
- reg.WriteDWORD("LahnanArvo", 42);
-
- reg.ValueString("LahnaStr", "Lahna", name, MAX_PATH);
- printf("Lahna Got string: \"%s\"\n", name);
- reg.WriteString("LahnaStr", "Hauki");
-
- /*
- err = RegOpenKeyEx(HKEY_CURRENT_USER,
- "Software\\Sahara Surfers\\MidpNT", 0, KEY_ALL_ACCESS, &key);
- if ( err != ERROR_SUCCESS )
- {
- printf("Couldn't open key, will create it\n");
- err = RegCreateKeyEx(HKEY_CURRENT_USER,
- "Software\\Sahara Surfers\\MidpNT", 0, NULL,
- REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key,
- &createStatus);
- if ( err != ERROR_SUCCESS )
- {
- printf("Couldn't create key: %li\n", err);
- return 1;
- }
- if ( createStatus == REG_CREATED_NEW_KEY )
- printf("Created new key\n");
- else
- printf("Opened old key (?!?)\n");
- }
- printf("We have a key: %08X\n", (unsigned) key);
-
- err = RegQueryValueEx(key, "DefaultDirectory", 0, &valType,
- (LPBYTE) name, &nameLen);
- if ( err != ERROR_SUCCESS )
- {
- printf("Couldn't query value, will create it\n");
- err = RegSetValueEx(key, "DefaultDirectory", 0, REG_SZ,
- (CONST BYTE*) "q:\\kala\\dirikkkka", 18);
- if ( err != ERROR_SUCCESS )
- {
- printf("Creation failed: %li\n", err);
- return 2;
- }
- }
- else
- {
- printf("Got value: \"%s\", type %li, len %li\n", name, valType,
- nameLen);
- }
- */
-
- return 0;
- }